﻿using System;
namespace Producers.Liiklusregister.Xtee.Riik.Ee.Producer.Liiklusregister {
    
    
    public partial class Paring1Soidukiandmed : global::Producers.Liiklusregister.Xtee.Riik.Ee.Producer.Liiklusregister.IParing1Soidukiandmed {
        
        private string @__regmrk;
        
        private string @__marknm;
        
        private string @__mudelMod;
        
        private string @__varv;
        
        private string @__ehitaasta;
        
        private string @__kateg;
        
        private string @__kerenm;
        
        private string @__kytus;
        
        private string @__mootmht;
        
        private string @__mootvms;
        
        private Paring1Soidukiandmed.VoorandusType @__voorandus;
        
        private Paring1Soidukiandmed.VargusType @__vargus;
        
        private string @__pant;
        
        private string @__aadress;
        
        private string @__nimi;
        
        public Paring1Soidukiandmed() {
        }
        
        /// <summary>
        /// All parameters
        /// </summary>
        public Paring1Soidukiandmed(string @regmrk, string @marknm, string @mudelMod, string @varv, string @ehitaasta, string @kateg, string @kerenm, string @kytus, string @mootmht, string @mootvms, Paring1Soidukiandmed.VoorandusType @voorandus, Paring1Soidukiandmed.VargusType @vargus, string @pant, string @aadress, string @nimi) {
            this.@__regmrk = @regmrk;
            this.@__marknm = @marknm;
            this.@__mudelMod = @mudelMod;
            this.@__varv = @varv;
            this.@__ehitaasta = @ehitaasta;
            this.@__kateg = @kateg;
            this.@__kerenm = @kerenm;
            this.@__kytus = @kytus;
            this.@__mootmht = @mootmht;
            this.@__mootvms = @mootvms;
            this.@__voorandus = @voorandus;
            this.@__vargus = @vargus;
            this.@__pant = @pant;
            this.@__aadress = @aadress;
            this.@__nimi = @nimi;
        }
        
        /// <summary>
        /// Required parameters
        /// </summary>
        public Paring1Soidukiandmed(string @regmrk, string @marknm, string @mudelMod, string @varv, string @ehitaasta, string @kateg, string @kerenm, string @kytus, string @mootmht, string @mootvms, string @aadress, string @nimi) {
            this.@__regmrk = @regmrk;
            this.@__marknm = @marknm;
            this.@__mudelMod = @mudelMod;
            this.@__varv = @varv;
            this.@__ehitaasta = @ehitaasta;
            this.@__kateg = @kateg;
            this.@__kerenm = @kerenm;
            this.@__kytus = @kytus;
            this.@__mootmht = @mootmht;
            this.@__mootvms = @mootvms;
            this.@__aadress = @aadress;
            this.@__nimi = @nimi;
        }
        
        /// <summary>
        /// Copy Constructor
        /// </summary>
        protected Paring1Soidukiandmed(IParing1Soidukiandmed @paring1Soidukiandmed) {
            this.@__regmrk = @paring1Soidukiandmed.Regmrk;
            this.@__marknm = @paring1Soidukiandmed.Marknm;
            this.@__mudelMod = @paring1Soidukiandmed.MudelMod;
            this.@__varv = @paring1Soidukiandmed.Varv;
            this.@__ehitaasta = @paring1Soidukiandmed.Ehitaasta;
            this.@__kateg = @paring1Soidukiandmed.Kateg;
            this.@__kerenm = @paring1Soidukiandmed.Kerenm;
            this.@__kytus = @paring1Soidukiandmed.Kytus;
            this.@__mootmht = @paring1Soidukiandmed.Mootmht;
            this.@__mootvms = @paring1Soidukiandmed.Mootvms;
            this.@__voorandus = @paring1Soidukiandmed.Voorandus;
            this.@__vargus = @paring1Soidukiandmed.Vargus;
            this.@__pant = @paring1Soidukiandmed.Pant;
            this.@__aadress = @paring1Soidukiandmed.Aadress;
            this.@__nimi = @paring1Soidukiandmed.Nimi;
        }
        
        public virtual string Regmrk {
            get {
                return this.@__regmrk;
            }
            set {
                this.@__regmrk = value;
            }
        }
        
        public virtual string Marknm {
            get {
                return this.@__marknm;
            }
            set {
                this.@__marknm = value;
            }
        }
        
        public virtual string MudelMod {
            get {
                return this.@__mudelMod;
            }
            set {
                this.@__mudelMod = value;
            }
        }
        
        public virtual string Varv {
            get {
                return this.@__varv;
            }
            set {
                this.@__varv = value;
            }
        }
        
        public virtual string Ehitaasta {
            get {
                return this.@__ehitaasta;
            }
            set {
                this.@__ehitaasta = value;
            }
        }
        
        public virtual string Kateg {
            get {
                return this.@__kateg;
            }
            set {
                this.@__kateg = value;
            }
        }
        
        public virtual string Kerenm {
            get {
                return this.@__kerenm;
            }
            set {
                this.@__kerenm = value;
            }
        }
        
        public virtual string Kytus {
            get {
                return this.@__kytus;
            }
            set {
                this.@__kytus = value;
            }
        }
        
        public virtual string Mootmht {
            get {
                return this.@__mootmht;
            }
            set {
                this.@__mootmht = value;
            }
        }
        
        public virtual string Mootvms {
            get {
                return this.@__mootvms;
            }
            set {
                this.@__mootvms = value;
            }
        }
        
        public virtual Paring1Soidukiandmed.VoorandusType Voorandus {
            get {
                return this.@__voorandus;
            }
            set {
                this.@__voorandus = value;
            }
        }
        
        public virtual Paring1Soidukiandmed.VargusType Vargus {
            get {
                return this.@__vargus;
            }
            set {
                this.@__vargus = value;
            }
        }
        
        public virtual string Pant {
            get {
                return this.@__pant;
            }
            set {
                this.@__pant = value;
            }
        }
        
        public virtual string Aadress {
            get {
                return this.@__aadress;
            }
            set {
                this.@__aadress = value;
            }
        }
        
        public virtual string Nimi {
            get {
                return this.@__nimi;
            }
            set {
                this.@__nimi = value;
            }
        }
        
        public class VoorandusType : global::Xtee.Core.Schema.XsdInteger {
            
            public const decimal LUBATUD = 0;
            
            public const decimal KEELATUD = 1;
            
            public VoorandusType(decimal value) : 
                    base(value) {
                this.Validate();
                string annot = null;
                if (Value == 0) {
                    annot = "Lubatud";
                }
                if (Value == 1) {
                    annot = "Keelatud";
                }
                if (annot!=null) {
                    this._annotation = annot;
                }
                else {
                    throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
                }
            }
            
            public VoorandusType(string value) : 
                    base(value) {
                this.Validate();
                string annot = null;
                if (Value == 0) {
                    annot = "Lubatud";
                }
                if (Value == 1) {
                    annot = "Keelatud";
                }
                if (annot!=null) {
                    this._annotation = annot;
                }
                else {
                    throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
                }
            }
            
            public VoorandusType() : 
                    base(new decimal()) {
            }
            
            public static bool TryParse(string value, out VoorandusType result) {
                try {
                    result = new VoorandusType(value);
                    return true;
                }
                catch (System.Exception ) {
                    result = null;
                    return false;
                }
            }
            
            public static implicit operator Decimal (VoorandusType value) {
                return value.Value;
            }
            
            public static implicit operator VoorandusType (decimal value) {
                return new VoorandusType(value);
            }
        }
        
        public class VargusType : global::Xtee.Core.Schema.XsdInteger {
            
            public const decimal EI = 0;
            
            public const decimal JAH = 1;
            
            public VargusType(decimal value) : 
                    base(value) {
                this.Validate();
                string annot = null;
                if (Value == 0) {
                    annot = "Ei";
                }
                if (Value == 1) {
                    annot = "Jah";
                }
                if (annot!=null) {
                    this._annotation = annot;
                }
                else {
                    throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
                }
            }
            
            public VargusType(string value) : 
                    base(value) {
                this.Validate();
                string annot = null;
                if (Value == 0) {
                    annot = "Ei";
                }
                if (Value == 1) {
                    annot = "Jah";
                }
                if (annot!=null) {
                    this._annotation = annot;
                }
                else {
                    throw new global::Xtee.Core.Types.XteeSimpleTypeValidationException(string.Format("Enumeration on [{0}] does not allow value : [{1}] ", this.GetType().Name,Value.ToString()));;
                }
            }
            
            public VargusType() : 
                    base(new decimal()) {
            }
            
            public static bool TryParse(string value, out VargusType result) {
                try {
                    result = new VargusType(value);
                    return true;
                }
                catch (System.Exception ) {
                    result = null;
                    return false;
                }
            }
            
            public static implicit operator Decimal (VargusType value) {
                return value.Value;
            }
            
            public static implicit operator VargusType (decimal value) {
                return new VargusType(value);
            }
        }
    }
}
